package com.itheima.loop;  // 声明包路径，用于组织代码结构

public class ForForDemo8 {  // 定义公共类ForForDemo8，类名与文件名保持一致
    public static void main(String[] args) {  // 定义主方法，程序的入口点
        // 目标：搞清楚循环嵌套的流程。  // 注释说明学习目标
        test();  // 调用test方法，演示打印多行多列星号
        print99();  // 调用print99方法，演示打印九九乘法表
    }
    
    public static void test(){  // 定义公共静态方法test，用于演示嵌套循环打印星号
        // 需求：打印4行5列星星。  // 方法功能说明（实际代码是10x10）
        // 1、定义一个循环控制打印几行。  // 外层循环控制行数
        for (int i = 1; i <= 10; i++) {  // 外层循环，i从1开始，最大到10，共执行10次
            // i是行数计数器，表示当前正在打印第几行
            // 2、定义一个循环控制每行打印多少个星星  // 内层循环控制每行的列数
            for (int j = 1; j <= 10; j++) {  // 内层循环，j从1开始，最大到10，每行打印10个星号
                // j是列数计数器，表示当前行正在打印第几个星号
                System.out.print("*"); // 不换行打印  // 使用print方法不换行输出星号
            }

            // 3、打印完一行需要换行  // 内层循环结束后换行
            System.out.println(); // 换行  // 使用println方法输出空内容，仅起到换行作用
        }
        // 外层循环执行流程：每次外层循环执行一次，内层循环会完整执行10次
    }

    // 定义一个方法  // 方法功能注释
    public static void print99(){  // 定义公共静态方法print99，用于打印九九乘法表
        // 1、定义一个循环控制打印多少行  // 外层循环控制行数
        for (int i = 1; i <= 9; i++) {  // 外层循环，i从1开始，最大到9，共9行
            // i = 1 2 3 4 5 6 7 8 9  // i表示乘法表中的第二个因数
            // 2、定义一个循环控制当前行的列信息。  // 内层循环控制每行的列数
            for (int j = 1; j <= i; j++) {  // 内层循环，j从1开始，最大到i，每行的列数逐渐增加
                // j表示乘法表中的第一个因数，每行j从1增加到i
                // 3、打印每列的信息。  // 输出乘法表中的每个表达式
                System.out.print(j + " x " + i + " = " + (j * i) + "\t");  // 不换行打印乘法表达式，使用\t制表符对齐
                // 字符串拼接：将多个内容连接成一个字符串输出
                // (j * i)计算乘积并转换为字符串
                // \t表示制表符，用于对齐显示
            }
            // 3、换行  // 每行的所有列打印完成后换行
            System.out.println();  // 换行，开始打印下一行
        }
        // 九九乘法表的规律：第i行有i个表达式，且第二个因数都是i
    }
}
